	package com.redpack.redpost.util.dao;

	import java.sql.Connection;
	import java.sql.PreparedStatement;
	import java.sql.ResultSet;
	import java.util.ArrayList;
	import java.util.List;

	import com.redpack.redpost.connection.RedpostConexion;
import com.redpack.redpost.util.to.*;

	public class PuntosRecompensaDao {

		
		public static List getPuntosRecompensa(String nip) throws Exception {
			
			Connection conn = RedpostConexion.openConnection( ) ;
			conn.setAutoCommit( false ) ;
			PreparedStatement ps = null ;
			ResultSet rs = null ;
			List estatusArribo = new ArrayList(); 
			String sql = "" ;
			
			try{			
				sql += "select * from redpost.tbl_arribo_puntos ";
				sql += "where nip='" + nip +"' ";
				sql += "and activo = 2;";
				
				ps = conn.prepareStatement( sql ) ;
				rs = ps.executeQuery();

				
				while (rs.next()) {
					PuntosRecompensaTo row = new PuntosRecompensaTo();
					
					row.setCve_punto(rs.getInt("cve_punto"));

					estatusArribo.add( row );
				}
				
				conn.commit( ) ;
				ps.close( ) ;
				conn.close( ) ;
				
				return estatusArribo ;
				
			}catch ( Exception e ) {
				e.printStackTrace( ) ;
				return estatusArribo = null ;
			} finally {
		        if (conn != null) {
		            conn.close();
		        }
				
			}
		}	
		
	
public static int  getPuntosPorUsuario(String nip) throws Exception {
			
			Connection conn = RedpostConexion.openConnection( ) ;
			conn.setAutoCommit( false ) ;
			PreparedStatement ps = null ;
			ResultSet rs = null ;
			int  puntosUsuario = 0; 
			String sql = "" ;
			
			try{			
				sql += "select sum(puntos_recibidos) as puntos_recibidos  from  redpost.tbl_arribo_puntos ";
				sql += "where nip='" + nip +"' ";
				sql += "and activo = 2;";
				
				
				ps = conn.prepareStatement( sql ) ;
				rs = ps.executeQuery();

				
				while (rs.next()) {

					puntosUsuario = rs.getInt("puntos_recibidos");
				}
				
				conn.commit( ) ;
				ps.close( ) ;
				conn.close( ) ;
				
				return puntosUsuario ;
				
			}catch ( Exception e ) {
				e.printStackTrace( ) ;
				return puntosUsuario = 0 ;
			} finally {
		        if (conn != null) {
		            conn.close();
		        }
				
			}
		}	



public static boolean updatePuntosUsuario(List puntosUsuario) throws Exception {
	
	Connection conn = RedpostConexion.openConnection( ) ;
	conn.setAutoCommit( false ) ;
	PreparedStatement ps = null ;
	
	List _puntosUsuario = new ArrayList(puntosUsuario); 
	String sql = "" ;
	boolean res = false;
	
	try{			
		
		java.util.Iterator iter2 = _puntosUsuario.iterator();
	      while (iter2.hasNext()) {
	    	  PuntosRecompensaTo _item = (PuntosRecompensaTo) iter2.next();
	      
	    	  sql += "UPDATE redpost.tbl_arribo_puntos  ";
			  sql += "   SET  ";
			  sql += " activo=0 ";
				
			  sql += " WHERE cve_punto ="+ _item.getCve_punto() +"; ";
	    	 

	    	  ps = conn.prepareStatement( sql ) ;
			  ps.execute( );
			  conn.commit( );
			  ps.close( ) ;

			  res = true ;
				
	      }
		
	      
		  conn.close( ) ;
		  
		  res = true ;
	      return res ;
		
	}catch ( Exception e ) {
		e.printStackTrace( ) ;
		return res = false ;
	} finally {
        if (conn != null) {
            conn.close();
        }
		
	}
}	



public static boolean saveNotaCreditoArribo( int cve_arribo, float envio, float descuento,float  importe_aplicado ,float puntos_aplicados) throws Exception {
	
	Connection conn = RedpostConexion.openConnection( ) ;
	conn.setAutoCommit( false ) ;
	PreparedStatement ps = null ;
	boolean res = false ;
	String sql = "" ;
	
	
	try {
		
		sql += "INSERT INTO redpost.tbl_nota_credito_arribo(" ;
		sql += "cve_arribo, envio, descuento, importe_aplicado, " ;
		sql += "activo,puntos_aplicados)" ;
		sql += "VALUES ("+ cve_arribo +", "+ envio +", "+ descuento +", "+ importe_aplicado +", 1,"+ puntos_aplicados +")" ;
		sql += ";" ;
		
		
		ps = conn.prepareStatement( sql ) ;
		ps.execute( ) ;
		
		res = true ;
		
		conn.commit( ) ;
		ps.close( ) ;
		conn.close( ) ;
		
		return res ;
		
	}catch ( Exception e ) {
		e.printStackTrace( ) ;
		conn.rollback( ) ;
		return res ;
	} finally {
        if (conn != null) {
            conn.close();
        }
		
	}
	
	
}


public static boolean abonarPuntosArribo( int cve_arribo, String nip, double puntos_recibidos) throws Exception {
	
	Connection conn = RedpostConexion.openConnection( ) ;
	conn.setAutoCommit( false ) ;
	PreparedStatement ps = null ;
	boolean res = false ;
	String sql = "" ;
	
	
	try {
		

		sql += "INSERT INTO redpost.tbl_arribo_puntos(" ;
		sql += "cve_arribo, NIP, puntos_recibidos, fecha_puntos, " ;
		sql += "activo)" ;
		sql += "VALUES ("+ cve_arribo +", '"+ nip +"', "+ puntos_recibidos +", now(), 1)" ;
		sql += ";" ;
		
		
		ps = conn.prepareStatement( sql ) ;
		ps.execute( ) ;
		
		res = true ;
		
		conn.commit( ) ;
		ps.close( ) ;
		conn.close( ) ;
		
		return res ;
		
	}catch ( Exception e ) {
		e.printStackTrace( ) ;
		conn.rollback( ) ;
		return res ;
	} finally {
        if (conn != null) {
            conn.close();
        }
		
	}
	
	
}

public static boolean updateArriboAplicoPuntos(int cve_arribo ) throws Exception {
	
	Connection conn = RedpostConexion.openConnection( ) ;
	conn.setAutoCommit( false ) ;
	PreparedStatement ps = null ;
	
	String sql = "" ;
	boolean res = false;
	
	try{			
		
		sql += "update redpost.tbl_arribo " ;
		sql += " set aplicar_puntos_rec=" +2;
		sql += " where cve_arribo="+ cve_arribo +" ;" ;
		
		
		ps = conn.prepareStatement( sql ) ;
		ps.execute( ) ;
		
		res = true ;
		
		conn.commit( ) ;
		ps.close( ) ;
		conn.close( ) ;
		
		return res ;
		
		
	}catch ( Exception e ) {
		e.printStackTrace( ) ;
		return res = false ;
	} finally {
        if (conn != null) {
            conn.close();
        }
		
	}
}	





public static NotaCreditoArriboTo getNotaCredito(int cve_arribo ) throws Exception {
	
	Connection conn = RedpostConexion.openConnection( ) ;
	conn.setAutoCommit( false ) ;
	PreparedStatement ps = null ;
	ResultSet rs = null ;
	
	String sql = "" ;
	NotaCreditoArriboTo _NotaCredito = new NotaCreditoArriboTo();
	
	try{			

		sql += "SELECT cve_nota_credito, cve_arribo, envio, descuento, importe_aplicado,puntos_aplicados ";
		sql += "FROM redpost.tbl_nota_credito_arribo ";
		sql += " where cve_arribo="+ cve_arribo +" ;" ;
		
		
		ps = conn.prepareStatement( sql ) ;
		rs = ps.executeQuery();
		
		
		while (rs.next()) {
			
			_NotaCredito.setCve_nota_credito(rs.getInt("cve_nota_credito"));
			_NotaCredito.setCve_arribo(rs.getInt("cve_arribo"));
			_NotaCredito.setDescuento(rs.getFloat("descuento"));
			_NotaCredito.setEnvio(rs.getFloat("envio"));
			_NotaCredito.setImporte_aplicado(rs.getFloat("importe_aplicado"));
			_NotaCredito.setPuntos_aplicados(rs.getFloat("puntos_aplicados"));
		}
		
		conn.commit( ) ;
		ps.close( ) ;
		conn.close( ) ;
		
		return _NotaCredito ;
		
		
	}catch ( Exception e ) {
		e.printStackTrace( ) ;
		return _NotaCredito = null ;
	} finally {
        if (conn != null) {
            conn.close();
        }
		
	}
}	



	
}
